V10. 2.05 -> 2.24
  The following notes describe the changes made in updating the ViewIt product from version 2.05 to 2.24. If upgrading from a version less than 2.2, be certain to read all of these notes since some changes may be required to your existing code.

Version 2.24 -> 2.242

• A bug was fixed in ViewIt 2.24 that caused ViewIt to crash when displaying color icons on machines w/o Color QuickDraw.

• An "Auto-Add" option was added to the Import menu and the "Edit Options" dialog.  This option can be used to force ViewIt to also make a copy of any linked resources (PICTs, ICONs, etc.) when importing controls.

• A "Hide on Switch" option was added to the Window dialog which causes FaceIt to hide the window when switching out under MultiFinder or System 7.  A corresponding "Hide all when switching out" flag can be set when calling DoInit which will override the "Hide On Switch" option and cause all windows to be hidden when switching.  See the Window dialog's on-line help and the description of DoInit for more info.

• BaseCt now avoids "inverting" colors (which usually looks awful) by either switching the use of body and content colors (like Apple's standard buttons) or by "dimming" colors (like the System 7 Finder).  See "Hilited Appearance" in the BaseCt guide for more info.  (If your screen is ≥ 4 bits deep, then the menu titles at the top of this window are now "dimmed" when pressed.  To see how bad inversion would be against the gray background, try removing VarCode option 4096 from one of these menu controls.)

Version 2.23 -> 2.24

• The NewWnd command was enhanced to support using an FWND to replace the contents of an existing window.  This gives you 3 different ways of quickly changing the appearance of an existing window:  hiding/showing views with ShoCtl, adding views dynamically with AddVew, and switching FWNDs with NewWnd.  See NewWnd under "Window Commands" for further info.  Jumping between the Control and Bounds dialogs when in edit mode is now accomplished using this feature.

• The Window dialog now supports setting a body (background) color for ViewIt windows.  This will be the color that is used to first erase the content of windows before redrawing controls.  You can use this feature to reduce the "flashing" of white that is sometimes seen when controls are redrawn.

• The Window dialog now supports setting a minimum screen depth ("Bits/Pixel Minimum") below which ViewIt will not allow colors to be drawn in the window.  Use of this option will allow you to use darker background colors without needing to worry about how these will appear on lower-depth screens.

• To test the appearance of windows when color is not available, a new edit mode option, "Test w/o Colors", is supported.  This option has the same effect as setting a "Bits/Pixel Minimum" in the Window dialog that exceeds the current screen depth.

• "15 Frame Hilite" has been added to the Colors menu.  If this color ≠ black, then ViewIt uses it to add a hilite to the control's frame.  This works best if the control's frame color is used as the darker, and the frame hilite color as the lighter, part of a 3D-like shadow.  The frame hilite can be shown either above or below the control, according to options set in the Bounds dialog.  Several examples of "shaded" controls that use this new feature have been added to the Import menu.

• BaseCt's menu controls now support the use of menus with colored menu items (previously, colors in such menus would only appear the first time the menu was popped-up).  Menu controls also support a new VarCode option 128 which can be used to force BaseCt to use the control's font and font size when displaying the menu.  See the discussion of this option in the BaseCt guide for information about some of the limitations of this new feature.

• BaseCt's "Color Picker" controls will now pop-up a palette with just black and white colors when Color QuickDraw is not available.  A new VarCode option 1024 is also now supported for showing Apple's Color Picker dialog only, without display of any pop-up palette.

Version 2.22 -> 2.23

• The basic control driver, BaseCt, was enhanced to support the use of a separate control as the "thumb" in dial controls, and the use of PICT, ICON, and cicn resources to define the content of dials.  See the "Dial Controls" topic in the BaseCt guide for more information about these new features, and the new "Dial + Thumb" and "Dial + cicns" example controls.

• BaseCt was enhanced to draw simple inactive text and icons using a gray color (instead of painting with gray) if running under System ≥ 7, in a color window, with ≥ 4 bits/pixel.  Note:  One artifact of this enhancement is that transparent menu controls will not cause underlying controls to turn gray when the menu control is made inactive (since BaseCt simply sets its text color to gray rather than painting it with a gray pattern).

• BaseCt's STR#-based scrollable lists now support VarCode option 16384, which causes BaseCt to allocate a separate STR#-type handle for each list control.  See "Scrollable Lists" in the BaseCt guide for more info.

• The SizWnd command was enhanced to support zooming of windows (see SizWnd under "Window Commands").

• A "∆" field has been added to the Bounds dialog to adjust the scrolling increment used by ViewIt's built-in scrolling support (i.e., you're not stuck with an 8-pixel scrolling increment when scrolling views).

• A main program procedure can now be attached to controls supported by the basic view driver, ViewBV.  This procedure can be used to draw the control's contents.  See "Content" under the "Views" topic and the "Override" topic for more info about this new feature.

• The "ShellCt" empty-shell control driver (baseID 7400) was replaced by a driver stub within ViewIt so that the actual code resource is no longer needed.  Existing programs that override this driver will not be affected, but you can now more directly create a program-based control by setting the fDrvr7400 variable in fRec to the address of a procedure that handles all control driver messages for controls with baseID 7400.  See the "Override" topic for further details.

• The "Inside FaceWare" product has been discontinued.  The information that it included about control drivers and messages has been made a part of the ViewIt product and can be found within the "Program Controls" folder.  This folder also includes a new set of C++, C, and Pascal projects that make it easier to create custom, program-based controls.

• THINK C examples were added to the "FaceStub" folder.

• Several minor bug fixes were made:
- Fixed bug that disabled operation of main menu "Close" item if no editable item was selected in active window.
- Fixed bug that wasn't supporting "Close = Hide" option in menu controls that contained the standard "Close" item.
- Fixed bug that sometimes caused "FCMD not found" message to appear when using an "Override ID".
- Fixed bug that wasn't always resetting the program string type when jumping to program override procedures.
- Fixed bug in Bounds dialog that wasn't always updating linked text properly on "Apply" or "OK".
- Fixed bug that sometimes caused unnecessary window updates to occur after zooming a window.

Version 2.21 -> 2.22

• Mouse and key events that occur while a splash screen is being displayed are now flushed from the event queue before hiding the splash screen.

• When running under a non-Roman script system, ViewIt now uses the System font (vs. Geneva) to display debugging-related text and the title bar text in palette windows (WDEF 1201).

• fMBarHt, fDecPtCh, fSysFNum, and fSysFName were added to fRec (see the "fRec Record" topic under "Commands" for a description of these variables).

• The System's preferred decimal point character (found in fDecPtCh) can now be entered in BaseCt's editable text items when such items are linked to numbers, even if the decimal character is not ".".  (ArrayCt was also fixed to accept such input in its sheet controls.)

• A way is now provided to prevent main menu windows from being torn off (see discussion of adding "0" before FWND IDs in "MENU WINDOWS" subtopic under "Windows" topic).

• Minor bugs were fixed in handling of custom Apple events, uninitialized menus, and operation of help window menus under low memory conditions.

Version 2.2 -> 2.21

• FaceIt now opens a default "splash screen" when DoInit is called.  You can replace this splash screen with your own (see "Window Initialization" subtopic in "Initializations" topic in FaceIt guide), or stop the display of any splash screen by adding 32 to parameter c when calling DoInit.

• Adapted ViewIt startup code to work around a bug in the CPU product (Connectix PowerBook Utilities) which caused a crash when opening ViewIt windows on a PowerBook if the "Keyboard Dialogs" part of CPU was enabled.

Version 2.07 -> 2.2
Version 2.2 of ViewIt is a major upgrade.  Owners of ViewIt 2.0 can upgrade to 2.2 for $40.

• Your programs must be recompiled using the new FaceProcXY and FaceStorXY include files.  If you don't do this, then LoadIt will complain about not being able to find version 2.0 code.

• The first set of changes were made to streamline ViewIt and FaceIt by removing obsolete features.  Most of these changes will only affect programs developed prior to 1993:

- FaceIt no longer supports the old "It" modules:  GrafIt, TextIt, ShowIt, and DialIt.  If you've been delaying upgrading these old windows to GrafCt, TextCt, and ShowCt controls within ViewIt windows, then you'll have to do that now in order to make use of ViewIt 2.2 and later versions.

- Although the old "picture palette" menus are still supported, the documentation for these has been removed from the FaceIt guide, and MDEF 1111, WDEF 1111, and PAT 1111 have been removed from the FaceWare file.  If you have existing programs that make use of picture palettes, simply copy these resources back into the new FaceWare file or your program's resource file to continue to make use of the picture palettes.  Eventually consider replacing picture palettes with the new ViewIt menu windows and floating windows described below.  WARNING:  If you launch a program with MENU resources that refer to MDEF 1111 and that MDEF is not present, then a crash will occur.

- FaceIt's support for auto-initialization of windows via STR# 1000 when calling DoInit has been eliminated.  If you were relying on STR# 1000 to auto-open windows, simply add the corresponding NewWnd calls to your program after DoInit to open the same windows.

- FaceIt's DoAuto2 command was eliminated.

- FaceIt no longer puts font names in STR# 1106 when DoInit is called.

- The old UtilIt and BaseVw modules have been made a part of ViewIt (so you don't need to worry about adding these to finished programs).

- The new FaceWare file no longer contains undocumented versions of TextCt, GrafCt, and ArrayCt since the presence of these modules was confusing to programmers who had not purchased the EditControls product.  To make use of these modules, use MoveIt to move version 2.2 of these back into the new FaceWare file.

• The remaining changes are enhancements to ViewIt:

- The NewWnd command was enhanced to support the creation of floating- and alert-type windows.  See NewWnd in the "Window Commands" topic and the "Windows" topic in the ViewIt guide for further information.

- Any modeless or floating ViewIt window can now be displayed as a pull-down, pop-up, or hierarchical menu that can be optionally torn off.  This feature plus the support for floating windows makes the old "picture palette" menus obsolete.  See "Menu Windows" in the "Windows" topic of the ViewIt guide for further information.  The "fDemoXY" program has also been updated to illustrate how the new menu and floating windows can replace the old picture palettes.

- The "Init. Hidden" option in ViewIt's Window dialog has been changed to "Close = Hide" (hit in close box hides the window).  If you were relying on "Init. Hidden" to keep windows hidden on initialization, then uncheck this option in the Window dialog and change your NewWnd calls to pass -FWND ID to keep the windows hidden.

- The HitCtl command was added to simulate hits in buttons, check boxes, and radio buttons.  See HitCtl in the "Control Commands" topic for further info.

- The DrwCtl command was enhanced to support redrawing all controls in a window.  See DrwCtl in the "Control Commands" topic for further info.

- The ChgCur command now supports passing the ID number of both CURS and crsr (color cursor) resources.

- ViewIt now supports the use of alternative characters for the decimal point in strings returned by NumToS or processed by SToNum.  This support is based upon international resource settings, but, if working under System ≥ 7.1, you can test this support via the "Numbers" control panel.

- On-line resource editing from within the Control dialog was enhanced by also copying any "TMPL" template resource for the type being edited to the temporary resource file that is passed to ResEdit or Resorcerer.  This allows you, for example, to edit the LST1 resource used with ListCt controls from within the Control dialog and immediately see the effects of changes.

Version 2.06 -> 2.07

• "Allow Modal Switch" option was added to the Window dialog.  If set, then the user can switch programs even if the window is opened as a modal window.  This feature requires System ≥ 7.0.  See the Window dialog's on-line help for further info.  (All of ViewIt's built-in editing dialogs now have this flag set, making it much easier to copy/paste resources between programs.)

• The Control dialog now includes a pull-down menu in its "Res Link" section that supports on-line editing of linked resources.  If FaceIt and System ≥ 7.0 are in use, then the linked resource can even be edited with ResEdit or Resorcerer without quitting the program.  See Control dialog's on-line help for further info.

• The old FaceIt DoInit option to support opening and printing files "from the Finder" (a = 512) is now always enabled (i.e., FaceIt now always generates a message for files that the user attempts to open or print from Finder), so you can remove this bit value from a in DoInit within existing programs.  This and other changes were made to improve Apple event handling.

• Pop-up palettes supported by BaseCt can now be popped up at the right or left of the control by adding 8 to the VarCode.

• The "Color Picker" pop-up palette now pops up a palette with colors from the System color table corresponding to the deepest screen that intersects the control rectangle (versus using the program-wide color palette).  If the screen depth is greater than 4, however, then the 16-color System table is shown.  To show the 256-color System table, add 256 to the VarCode.  If you prefer the old behavior of having the program-wide palette displayed, add 512 to the control's VarCode.

• clut 1000 is no longer used by FaceIt/St to reset the program color palette on DoInit, and has been removed from all demo program resource files.  Programs continue to have program palettes, but the default color palette will consist of just black and white colors unless changed by the program (see SetPal command in "Color Utilities").

• The LoadIt module and MoveIt program were improved.  Use MoveIt 2.12 to move LoadIt 2.02 to all of your resource files that currently contain LoadIt 2.01.

Version 2.05 -> 2.06

• If ViewIt's on-line help and editing resources are available, then the ViewIt Help window (this window) is now auto-opened by FaceIt when DoInit is called (i.e., you no longer need to add a call to HlpWnd to make this happen).  You can disable this default behavior by adding 64 to parameter c when calling DoInit (see DoInit in the "Program Commands" topic and HlpWnd in the "Window Commands" topic).

• Many new features were added to the ViewIt Help window.  See the "Debugging Aids" subtopic in the "Getting Started" startup topic for a description of these new features.

• Edit mode improvements:
 - A new "Links" dialog is supported which displays a list of the data links and item IDs for all of the controls in the window, making it easier to see which controls have been linked, and to edit links and item IDs.
 - You can now drag across the icon menu bar at the bottom of the window to pop up successive menus.
 - When working in an editing dialog (Control, Bounds, etc.), you can now click in the underlying window to select controls (a new MdlWnd option was added to help support this).
 - OPTION-clicking on a hidden control/view in the controls bar will first hide any selected controls/views before showing the hidden control/view.

• The Escape key can now be associated with a command key combination.  See the new "Special Keys" subtopic in the "Windows" topic of the ViewIt guide.

• Standard CDEF-based dial controls marked as type "Dial" in the Control dialog now exhibit default behavior similar to that seen with BaseCt's dial controls.  See "CDEFs" in the "Drivers" menu for more information.  A new "1205 Std Dial" example FCTL can also be found in the import menu.

• A new "Static Line" and additional "3D" example controls were added to BaseCt (they appear in FCTL Import menu).

• The handling of BaseCt controls that display picts, icons, and other resources was improved:
 - Controls linked to PICT, ICON, CURS, PAT , or cicn resources can now display multiple resources without the use of an STR# resource.  To do this, simply set Min and Max equal to a range of resource ID numbers, where Min has the same value as that of the linked resource ID.  The new "cicn 3D" & "PICT Pop-Up" FCTL examples illustrate use of this new feature.
 - Bit value 16 can be added to the VarCode to force BaseCt to always display the control's title, even with controls that are set up to stretch the resource to fit the content area of the control.  Formerly, if bit value 32 was not used, then there was no way to display the control's title for these control types.
 - When initializing controls that are linked to an STR# list of resources, BaseCt now checks and resets the content area of the control to fit the resource size if Max V or H in the Bounds dialog is > 0.  Formerly, the resource was being stretched to fit the control's content area, regardless of the Bounds settings.
 - When using SetVal to update the contents of a linked picture or other resource (data type = 11), BaseCt now updates the content size of the control to fit the new picture if Max V or H in the Bounds dialog is > 0.

• Other bug fixes:
 - A Control dialog bug was fixed that caused selections from the "Behavior" menu to clobber the "Variable Type" entry on page 2 of the dialog.
 - A conflict with NOW Utilities WYSIWYG menus was resolved that would eventually cause a crash if menu controls with FSSC hierarchical menus were disposed of.
 - A fix was made for a standard CDEF bug that was preventing "TrackControl" from working properly when used in programs to support CDEF-based dial controls.
 - BaseCt list controls no longer "flash" when SetVal is called (unless the number of items in the list is changed).